public class PilhaComandos {

    private NoPilhaComandos prim;

    public void libera() {

	NoPilhaComandos p = prim;

	while (p != null) {

	    NoPilhaComandos t = p.getProx();
	    p = null;
	    p = t;
	}
	prim = null;
    }

    public String pop() {

	if (vazia()) {
	    return null;

	} else {
	    String valor = prim.getComando();
	    prim = prim.getProx();
	    return valor;
	}
    }

    public void push(String comando, int enderecoAtual) {

	NoPilhaComandos novo = new NoPilhaComandos();
	novo.setComando(comando);
	novo.setEndereco(enderecoAtual);
	novo.setProx(prim);
	prim = novo;
    }

    public boolean vazia() {
	return (prim == null);
    }

    @Override
    public String toString() {

	NoPilhaComandos p = prim;
	String temp = "";

	while (p != null) {
	    temp = temp + p.getComando() + " ";
	    p = p.getProx();
	}
	return temp;
    }

    public String getPrim() {
	return prim.getComando();
    }

    public int tamanho() {

	if (prim == null) {
	    return 0;

	} else {

	    int contador = 1;
	    NoPilhaComandos p = prim;

	    while (p != null) {
		p = p.getProx();
		contador++;
	    }
	    return contador;
	}
    }
}
